<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>04_promise的all方法</title>
</head>
<body>
    
</body>
<!-- 
为什么有这个 all 方法,现在有一个需求:需要请求多个接口(比如两个接口)都拿到结果才能继续走下面的逻辑
-->
<script>
// 传统方式一:
// let requestResult1 = false
// let requestResult2 = false

// $.ajax({
//     url:'http://xxx.com',
//     success: function(){
//         requestResult1 = true
//         nextRequest()
//     }
// })

// $.ajax({
//     url: 'http://yyy.com',
//     success: function(){
//         requestResult2 = true
//         nextRequest()
//     }
// })

// function nextRequest(){
//     if(requestResult1 && requestResult2){
//         //todo...
//     }
// }

//使用 promise all(真像 hyperf 里的协程 Parallel写法)
Promise.all([
    new Promise((resolve,reject) => {
        setTimeout(()=>{
            resolve('result1')
        },3000)
    }),
    new Promise((resolve,reject) => {
        setTimeout(()=>{
            resolve('result2')
        },1000)
    })
]).then( result => { //只有当上面的两个请求都请求完后才会走到 then 里的逻辑
    console.log(result);  // result 是一个数组(接收多次请求返回的结果)
})


</script>
</html>